<?php
	// 文件上傳接口
	interface IUploadFile {
		function save($fileName = '');
	}
	// 文件上傳類
	class UploadFile implements IUploadFile {
		// 要保存的文件路徑
		private $path;
		
		/**
		 * 構造函數
		 * @param {String} $path 文件要保存的路徑
		 */
		public function __constructor($path) {
			$this->path = $path;
		}
		
		/**
		 * 生成指定位數的隨機數
		 * @param {Number} $length 要生成的隨機數的位數，默認10位
		 * @return {String} 生成后的隨機數
		 */
		private function random($length = 10) {
			$pattern = '1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZ';
			
			for($i = 0; $i < $length;$i++) {
				$key .= $pattern{mt_rand(0, 35)};
			}
			return $key;
		}
		
		/**
		 * 保存文件
		 * @param {String} $name 要保存的文件名稱，省略則自動生成文件名
		 * @return {String} 返回上傳后的文件路徑
		 */
		public function save($name = '') {
			$file = $_FILES['Filedata']['name'];
			$tmp  = split('.', $file);
			$type = $tmp[count($tmp) - 1];
			
			if ($name == '') {
				$fileName = $this->random() . '.' . $type;
			} else {
				$fileName = $name;
			}
			
			move_uploaded_file($_FILES['Filedata']['tmp_name'], $path.$fileName);
			
			return $path.$fileName;
		}
	}
	
	/**
	示例：
	$uploadFile = new UploadFile(dirname(__FILE__).'/');
	echo $uploadFile->save();
	 */
?>